Перейти к основному содержимому

Установка InsightStream RAG

В данном шаге будет рассмотрен процесс развертывания модуля InsightStream для умного поиска по корпоративной базе знаний, поверх уже работающей платформы Compressa. Модуль InsightStream устанавливается на тот же сервер, что и платформа Compressa. Для установки команда передаст вам специальный дистрибутив.

Общее описание системы

InsightStream включает следующие компоненты:

База данных: Qdrant, используемая для хранения и поиска данных. Qdrant должен быть установлен отдельно перед развертыванием InsightStream.

Шина сообщений: RabbitMQ для управления очередями задач и обмена сообщениями между сервисами.

Индексатор: работает с Qdrant для хранения и поиска данных, что позволяет находить релевантные документы по схожести.

Суммаризатор: использует GPT для создания кратких и точных ответов на запросы.

Веб-интерфейс: предоставляет доступ к системе через браузер. Построен на React.js и взаимодействует с backend через REST API.

::: note Важно: InsightStream не имеет встроенной аутентификации. Эти механизмы следует добавлять отдельно, если они требуются для вашей инфраструктуры. Кроме того, RabbitMQ, Qdrant и система мониторинга также настраиваются отдельно, и их настройка описана в их документации. :::

Установка и запуск системы

InsightStream устанавливается с помощью Docker Compose, что упрощает контейнеризацию, управление зависимостями и обновление системы.

Шаги установки

  1. Проверка окружения: Убедитесь, что Docker и Docker Compose установлены корректно.

  2. Настройка RabbitMQ, Qdrant и системы мониторинга: До запуска системы необходимо настроить RabbitMQ, Qdrant и систему мониторинга. Эти компоненты настраиваются отдельно, и их настройка описана в документации (подробности на https://qdrant.tech/ и https://www.rabbitmq.com/). В переменных окружения компоуз-файла указывается местоположение этих систем.

  3. Подготовка compose-файла: Настройте файл конфигурации всех компонентов InsightStream. Для удобства можно создать файл .env , который будет автоматически считываться Docker Compose. compose-файле используются следующие переменные окружения, которые должны быть настроены в этом .env файле перед установкой:

CHAT_API_BASE: http://localhost:8080/v1/

CHAT_MODEL: Compressa-LLM

CHAT_API_KEY: Ваш ключ авторизации к локальной платформе Compressa

EMBED_API_BASE: http://localhost:8080/v1/

EMBED_MODEL: Compressa-Embedding

EMBED_API_KEY: Ваш ключ авторизации к локальной платформе Compressa

QDRANT_URL: базовый URL API базы данных Qdrant

RABBITMQ_URL: строка подключения к RabbitMQ

Убедитесь, что параметры, такие как порты, ресурсы и зависимости, указаны корректно.

  1. Запуск установки: Выполните команду docker-compose up -d

  2. Проверка компонентов: Выполните docker ps и docker logs <container_name> для проверки состояния.

Доступ к компонентам

Индексатор: http://localhost:8501 Поисковый интерфейс: http://localhost:8000

Тестирование после установки

После развертывания выполните тестовые запросы для проверки работы всех компонентов:

Проверка создания ассистентов: Войдите на http://localhost:8501 и убедитесь, что ассистенты создаются и работают корректно. Проверка поискового интерфейса: Перейдите на http://localhost:8000 и выполните несколько тестовых запросов.

Обеспечение безопасности

InsightStream не имеет встроенной аутентификации, однако можно настроить аутентификацию через Nginx с использованием ключей доступа. Пример конфигурации Nginx:

server {
listen 443 ssl;
server_name yourdomain.com;

ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;

location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

if ($http_authorization != "Bearer your_api_key_here") {
return 401;
}
}
}

Дополнительные методы аутентификации

Рекомендуется рассмотреть интеграцию с корпоративной системой SSO (Single Sign-On) или использовать OAuth2 для повышения уровня безопасности. Это обеспечит контроль доступа и централизованное управление учетными данными.

Журналирование и мониторинг

Журналирование

InsightStream пишет логи в stdout. Эти логи могут быть проанализированы с использованием ELK (Elasticsearch, Logstash, Kibana). Чтобы настроить интеграцию с ELK, выполните следующие шаги:

  1. Logstash: Настройте Logstash для сбора логов из контейнеров Docker InsightStream. Пример конфигурации Logstash:

    input {
    docker {
    containers => ["insightstream"]
    type => "docker-logs"
    }
    }
    output {
    elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "insightstream-logs"
    }
    }
  2. Kibana: Настройте дашборды в Kibana для анализа логов, чтобы следить за состоянием системы и отслеживать ошибки.

    Пример лога:

    [2024-10-29 14:32:45] INFO: Запрос пользователя: "Какие документы необходимы для регистрации?"
    [2024-10-29 14:32:50] ERROR: Ошибка индексации документа "doc123.pdf": Недопустимый формат.

Мониторинг

Используйте Prometheus для мониторинга ресурсов системы (CPU, RAM, диск). Настройте метрики для отслеживания:

  • Количество запросов: следите за количеством входящих запросов к системе.
  • Время ответа: мониторинг времени отклика для выявления потенциальных проблем с производительностью.
  • Нагрузка на CPU и использование памяти: помогает выявить нехватку ресурсов.
  • Состояние контейнеров: отслеживайте перезапуски и ошибки контейнеров.

Резервное копирование и восстановление данных

Резервное копирование

Для создания снапшота коллекции в Qdrant используйте следующую команду:

curl -X POST "http://localhost:6333/collections/{collection_name}/snapshots"

Восстановление данных

Для восстановления данных из снапшота используйте команду:

curl -X PUT "http://localhost:6333/collections/{collection_name}/snapshots/recover" -H 'Content-Type: application/json' -d'
{
"location": "http://qdrant-node-1:6333/collections/{collection_name}/snapshots/snapshot-2022-10-10.snapshot"
}'

Проверка восстановления

После восстановления данных выполните тестирование, чтобы убедиться, что все документы доступны и корректно индексированы.